package com.tlight.repositorio;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.tlight.hibernateUtil.HibernateUtil;
import com.tlight.interfaces.IRepositorioCardapio;
import com.tlight.modelos.Cardapio;

public class RepositorioCardapio implements IRepositorioCardapio {

	Session sessao = null;
	Transaction tx = null;

	@Override
	public void montarCardapio(Cardapio a) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		sessao.save(a);
		tx.commit();
		sessao.clear();
	}

	@Override
	public void removerCardapio(Cardapio a) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		sessao.delete(a);
		tx.commit();
		sessao.clear();
	}

	@Override
	public void editarCardapio(Cardapio a) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		sessao.update(a);
		tx.commit();
		sessao.clear();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Cardapio> listaTodosCardapios() {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		List<Cardapio> la = null;
		Criteria todos = sessao.createCriteria(Cardapio.class);
		la = todos.list();
		return la;
	}

	@Override
	public Cardapio procurarIdCardapio(long id) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		Query selecao = sessao.createQuery("FROM Cardapio WHERE id =:ID");
		selecao.setLong("ID", id);
		Cardapio a = (Cardapio) selecao.uniqueResult();
		return a;
	}

	@Override
	public Cardapio procurarValor_do_cardapio(Double valor_cardapio) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		Query selecao = sessao
				.createQuery("FROM Cardapio WHERE valor_cardapio =:VALOR_CARDAPIO");
		selecao.setDouble("VALOR_CARDAPIO", valor_cardapio);
		Cardapio a = (Cardapio) selecao.uniqueResult();
		return a;
	}

	@Override
	public Cardapio procurarData_de_Montagem(String data_de_montagem) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		Query selecao = sessao
				.createQuery("FROM Cardapio WHERE data_de_montagem =:DATA_MONTAGEM");
		selecao.setString("DATA_MONTAGEM", data_de_montagem);
		Cardapio a = (Cardapio) selecao.uniqueResult();
		return a;
	}

	@Override
	public Cardapio procurarCardapio_por_Responsavel(long idResponsavel) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		Query selecao = sessao
				.createQuery("FROM Cardapio WHERE idResponsavel =:RESPONSAVEIS");
		selecao.setLong("RESPONSAVEIS", idResponsavel);
		Cardapio a = (Cardapio) selecao.uniqueResult();
		return a;
	}

	@Override
	public Cardapio prucurarCardapio_por_Prato(long idPratos) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		Query selecao = sessao
				.createQuery("FROM Cardapio WHERE idPratos =:PRATOS");
		selecao.setLong("PRATOS", idPratos);
		Cardapio a = (Cardapio) selecao.uniqueResult();
		return a;
	}

	@Override
	public Cardapio procurarCardapio_por_Dependente(long idDependente) {
		// TODO Auto-generated method stub
		sessao = HibernateUtil.getSession();
		tx = sessao.beginTransaction();
		Query selecao = sessao
				.createQuery("FROM Cardapio WHERE idDependente =:DEPENDENTES");
		selecao.setLong("DEPENDENTES", idDependente);
		Cardapio a = (Cardapio) selecao.uniqueResult();
		return a;
	}
}
